package Collection;

import java.util.LinkedList;
import java.util.Queue;

/**
 * 队列
 * java.util.Queue接口，继承自Collection。队列可以保存一组元素。存取元素必须遵循先进先出
 * 原则。（FIFO first input first output）
 * 常用实现类：java.util.LinkedList
 */
public class QueueDemo {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        /*
        boolean offer(E e)
        入队操作，将给顶元素添加到队列末尾
         */
        queue.offer("abc");
        queue.offer("efg");
        queue.offer("hij");
        queue.offer("klm");
        queue.offer("nop");
        queue.offer("qis");
        System.out.println(queue);
        /*
        E poll()
        c
        出对操作，获取并删除队列中的队首元素
         */
        String str = queue.poll();
        System.out.println(str);
        System.out.println(queue);
        /*
            E peek()
            引用队首元素，获取队首元素后，元素还在队列中
         */
        str = queue.peek();
        System.out.println(str);
        System.out.println(queue);
        //列队的遍历
        //新循环（迭代器）遍历后，元素并不会出对。
        for (String s:queue){//新循环（迭代器）遍历后，元素并不会出对。
            System.out.println(s);
        }
        System.out.println(queue);
        //foreach遍历
        queue.forEach(e-> System.out.println(e));//foreach遍历
        System.out.println(queue);
        System.out.println("++++++++++++++++++++++++++++++");
        //使用poll方法遍历
       /* int a=queue.size();
        for (int i = 0; i <a ; i++) {
           str =queue.poll();
            System.out.println(str);
        }
        System.out.println(queue);*/
        while (queue.size()>0){
            str=queue.poll();
            System.out.println(str);
        }
        System.out.println(queue);
    }
}
